package it.giuseppetrisciuoglio.lyrics.service.youtube;

import java.io.IOException;

import it.giuseppetrisciuoglio.lyrics.service.expandurl.ExpandUrlService;
import it.giuseppetrisciuoglio.lyrics.service.facebook.FacebookService;
import it.giuseppetrisciuoglio.lyrics.service.twittersearch.TwitterService;
import it.giuseppetrisciuoglio.lyrics.utils.StringUtilies;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class YoutubeService {

	@Autowired
	private TwitterService twitterService;
	
	@Autowired
	private ExpandUrlService expandUrlService;
	
	@Autowired
	private FacebookService facebookService;
	
	public String findTwitterYoutubeVideoUrl(String artista, String titolo){
		//faccio dormire un po' il thread rate limit 400 per 1 ora
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			throw new RuntimeException(e);
		}
		String urlShort = twitterService.findYoutubeVideoByArtistaAndTitolo(StringUtilies.replaceSpecialCharVocals(artista), StringUtilies.replaceSpecialCharVocals(titolo));
		if (urlShort == null || urlShort.isEmpty()){
			return null;
		}
		String urlyoutube = expandUrlService.getURL(urlShort);
		if (urlyoutube != null && !urlyoutube.isEmpty()){
			return urlyoutube.substring(0, urlyoutube.indexOf("&"));
		}
		return null;
	}
	
	public String getYoutubeVideoURL(String artista, String titolo){
		String videoUrl = null;
		try {
			videoUrl = findFBYoutubeVideoURL(artista, titolo);
			if (videoUrl == null || videoUrl.isEmpty()){
				videoUrl = findTwitterYoutubeVideoUrl(artista, titolo);
			}
		} catch (Exception e) {
		}
		return videoUrl;
	}
	
	public String findFBYoutubeVideoURL(String artista, String titolo){
		artista = StringUtilies.replaceSpecialCharVocals(artista);
		titolo = StringUtilies.replaceSpecialCharVocals(titolo);
		//faccio dormire un po' il thread rate limit 600 per 600 secondi
		try {
			Thread.sleep(500);
		} catch (InterruptedException e) {
			throw new RuntimeException(e);
		}
		
		String url = facebookService.getYoutubeURL(artista, titolo);
		if (url != null && !url.isEmpty()){
			if (url.indexOf("&") > -1){
				return url.substring(0,url.indexOf("&"));
			}
			else{
				return url;
			}
		}
		return null;
	}
}
